import { defineConfig } from 'vite'
import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'
import https from 'https'

// 读取全局配置文件
function readConfig(filePath) {
  try {
      const fileContent = fs.readFileSync(filePath, 'utf8');
      
      // 使用正则匹配 GLOBAL_CONFIG 对象
      const match = fileContent.match(/const GLOBAL_CONFIG\s*=\s*({[\s\S]*?});/);
      
      if (match && match[1]) {
          // 使用 Function 安全地创建对象
          const configObj = new Function(`return ${match[1]}`)();
          return configObj;
      } else {
          throw new Error('未找到 GLOBAL_CONFIG 配置');
      }
  } catch (error) {
      console.error('读取配置文件失败:', error);
      return null;
  }
}
const globalConfig = readConfig('./config.js');
console.log(`配置文件：${JSON.stringify(globalConfig)}`);

// 获取当前文件的目录（类似于 __dirname）
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)

export default defineConfig({
  // 设置开发服务器
  server: {
    // 启用 HTTPS
    https: {
      key: fs.readFileSync(path.join(__dirname, '../key.pem')),
      cert: fs.readFileSync(path.join(__dirname, '../cert.pem'))
    },
    // 设置端口
    port: 3001,
    // 允许所有网络接口访问
    host: '0.0.0.0',
    // 自动打开浏览器（可选）
    open: false,
    // 配置 CORS（如果需要）
    cors: false,
    proxy: {
      // 代理 Socket.IO 请求。所有socket.io，都会先打到这里，然后再转发给信令服务器。因为只有这里可以配置忽略ssl
      '/socket.io': {
        // target: 'https://1.94.180.78:3000',
        // 这里配置你信令服务器所在的ip和端口
        target: globalConfig.SIGNALING_SERVER,
        changeOrigin: true,
        secure: false, // 忽略目标服务器的 SSL 验证
        ws: true // 支持 WebSocket
      }
    }
  },
  // 设置构建选项
  build: {
    // 输出目录
    outDir: 'dist'
  }
})
